<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>BNF for script.jj</TITLE>
</HEAD>
<BODY>
<H1 ALIGN=CENTER>BNF for script.jj</H1>
<H2 ALIGN=CENTER>TOKENS</H2>
<TABLE>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Separadores
</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; SKIP : {
" "
| "\n"
| "\t"
| "\r"
| &lt;"#" (~["\n","\r"])* ("\n" | "\r" | "\r\n")&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; SPECIAL : {
&lt;UNDEF: "undef"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Palabras reservadas 
</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;IF: "if"&gt;
| &lt;ELSE: "else"&gt;
| &lt;WHILE: "while"&gt;
| &lt;CALL: "call" | "@"&gt;
| &lt;BREAK: "break"&gt;
| &lt;EXIT: "exit"&gt;
| &lt;WAIT: "wait"&gt;
| &lt;NUMBER: "number"&gt;
| &lt;STRING: "string"&gt;
| &lt;LOCATION: "location"&gt;
| &lt;MACROKEY: "macrokey"&gt;
| &lt;COLOR: "color"&gt;
| &lt;SEC: "sec"&gt;
| &lt;MIN: "min"&gt;
| &lt;MILISEC: "milisec" | "msec"&gt;
| &lt;IODELAY: "iodelay"&gt;
| &lt;KEYPRESS: "keypress" | "kpress"&gt;
| &lt;KEYRELEASE: "keyrelease" | "krelease" | "krel"&gt;
| &lt;PUSHKEY: "pushkey" | "pkey" | "key"&gt;
| &lt;MOUSEMOVE: "mousemove" | "mmove"&gt;
| &lt;MOUSEPRESS: "mousepress" | "mpress"&gt;
| &lt;MOUSERELEASE: "mouserelease" | "mrelease" | "mrel"&gt;
| &lt;DRAG: "drag"&gt;
| &lt;ALL: "all"&gt;
| &lt;OBJECTS: "objects"&gt;
| &lt;FROM: "from"&gt;
| &lt;BUTTON: "left" | "right"&gt;
| &lt;CLICK: "click"&gt;
| &lt;DCLICK: "dclick" | "doubleclick"&gt;
| &lt;SAY: "say"&gt;
| &lt;REPEAT: "repeat"&gt;
| &lt;TIMES: "times"&gt;
| &lt;GREAT: "&gt;"&gt;
| &lt;LESS: "&lt;"&gt;
| &lt;GREATEQUAL: "&gt;=" | "=&gt;"&gt;
| &lt;LESSEQUAL: "&lt;=" | "=&lt;"&gt;
| &lt;EQUAL: "=" | "=="&gt;
| &lt;NOTEQUAL: "!=" | "&lt;&gt;"&gt;
| &lt;AND: "and" | "&amp;&amp;" | "&amp;"&gt;
| &lt;OR: "or" | "||" | "|"&gt;
| &lt;ADD: "+"&gt;
| &lt;SUB: "-"&gt;
| &lt;MULTIPLY: "*"&gt;
| &lt;DIV: "/"&gt;
| &lt;MOD: "%"&gt;
| &lt;ISNATIVEMODE: "isnativemode" | "isnatmode"&gt;
| &lt;BEGIN: "begin"&gt;
| &lt;END: "end"&gt;
| &lt;BEEP: "beep"&gt;
| &lt;COMPONENT: "component"&gt;
| &lt;PRINT: "print"&gt;
| &lt;DATE: "date"&gt;
| &lt;TIME: "time"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Identificadores
</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;PARAM: "$" (&lt;DIGIT&gt;)+&gt;
| &lt;ID: ("_" | &lt;LETTER&gt;) ("_" | &lt;DIGIT&gt; | &lt;LETTER&gt;)*&gt;
| &lt;#LETTER: ["A"-"Z","a"-"z","\ufffd","\ufffd"]&gt;
| &lt;#DIGIT: ["0"-"9"]&gt;
| &lt;#SPACE: "\n" | "\r" | " " | "\t"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Literales
</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;NUMBER_LITERAL: (&lt;DIGIT&gt;)+&gt;
| &lt;STRING_LITERAL: "\"" (~["\""])* "\""&gt;
| &lt;KEY_LITERAL: "\'" (~["\'"])* "\'"&gt;
| &lt;LOCATION_LITERAL: "[" (&lt;SPACE&gt;)* (&lt;DIGIT&gt;)+ (&lt;SPACE&gt;)* "," (&lt;SPACE&gt;)* (&lt;DIGIT&gt;)+ (&lt;SPACE&gt;)* "]"&gt;
| &lt;COLOR_LITERAL: "[" (&lt;SPACE&gt;)* (&lt;DIGIT&gt;)+ (&lt;SPACE&gt;)* "," (&lt;SPACE&gt;)* (&lt;DIGIT&gt;)+ (&lt;SPACE&gt;)* "," (&lt;SPACE&gt;)* (&lt;DIGIT&gt;)+ (&lt;SPACE&gt;)* "]"&gt;
}

   </PRE>
  </TD>
 </TR>
</TABLE>
<H2 ALIGN=CENTER>NON-TERMINALS</H2>
<TABLE>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Reglas gramaticales
// Simbolo inicial de la gramatica
// begin -> decl* statements* <EOF>
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">begin</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod2">decl</A> )* ( <A HREF="#prod3">statements</A> )* &lt;EOF&gt;</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// statements -> state [;] | BEGIN (state [;])* END
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">statements</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod4">state</A> ( ";" )?</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;BEGIN&gt; ( <A HREF="#prod4">state</A> ( ";" )? )* &lt;END&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>"{" ( <A HREF="#prod4">state</A> ( ";" )? )* "}"</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Regla que produce las instrucciones del lenguaje
/*
	state ->
                  EXIT
		| BREAK
		| ID "=" exp_val
                | IODELAY exp_val [times]
		| CALL STRING_LITERAL ["(" l_param ")"]
		| WAIT exp_val [times]
		| WHILE bool_exp statements
		| IF bool_exp statements [ELSE statements()]

                | DRAG num_val [OBJECTS] loc_val [FROM] loc_val
		| CLICK <BUTTON> loc_val
		| DCLICK <BUTTON> loc_val
		| SAY str_val
		| REPEAT num_val [TIMES] statements

		| KEYPRESS key_val
		| KEYRELEASE key_val
		| MOUSEMOVE loc_val
		| MOUSEPRESS BUTTON
		| MOUSERELEASE BUTTON

*/</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">state</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;CALL&gt; &lt;STRING_LITERAL&gt; ( "(" <A HREF="#prod5">l_param</A> ")" )?</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;WAIT&gt; <A HREF="#prod6">exp</A> <A HREF="#prod7">times</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;ID&gt; | &lt;PARAM&gt; ) &lt;EQUAL&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IODELAY&gt; <A HREF="#prod6">exp</A> <A HREF="#prod7">times</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;CLICK&gt; &lt;BUTTON&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DCLICK&gt; &lt;BUTTON&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;SAY&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;KEYPRESS&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;KEYRELEASE&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;PUSHKEY&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;MOUSEMOVE&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;MOUSEPRESS&gt; &lt;BUTTON&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;MOUSERELEASE&gt; &lt;BUTTON&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DRAG&gt; ( &lt;ALL&gt; | <A HREF="#prod6">exp</A> ) ( &lt;OBJECTS&gt; )? <A HREF="#prod6">exp</A> ( &lt;FROM&gt; )? <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IF&gt; <A HREF="#prod6">exp</A> <A HREF="#prod3">statements</A> ( &lt;ELSE&gt; <A HREF="#prod3">statements</A> )?</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;WHILE&gt; <A HREF="#prod6">exp</A> <A HREF="#prod3">statements</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;REPEAT&gt; <A HREF="#prod6">exp</A> ( &lt;TIMES&gt; )? <A HREF="#prod3">statements</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;BREAK&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;EXIT&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;PRINT&gt; <A HREF="#prod6">exp</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DATE&gt; "(" ( &lt;ID&gt; | &lt;PARAM&gt; ) "," ( &lt;ID&gt; | &lt;PARAM&gt; ) "," ( &lt;ID&gt; | &lt;PARAM&gt; ) ")"</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;TIME&gt; "(" ( &lt;ID&gt; | &lt;PARAM&gt; ) "," ( &lt;ID&gt; | &lt;PARAM&gt; ) "," ( &lt;ID&gt; | &lt;PARAM&gt; ) ")"</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;BEEP&gt;</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Genera sufijos de tiempo
// times -> MILISEC | MIN | [ SEC ]
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">times</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;MILISEC&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;MIN&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;SEC&gt; )?</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Declaraci�n de variables
// decl -> ( NUMBER | STRING | LOCATION | MACROKEY | COLOR) l_id
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">decl</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;NUMBER&gt; | &lt;STRING&gt; | &lt;LOCATION&gt; | &lt;MACROKEY&gt; | &lt;COLOR&gt; ) <A HREF="#prod8">l_id</A> ( ";" )?</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Lista de identificadores separados por comas
// l_id -> id [= exp()] "," l_id
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">l_id</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;ID&gt; ( &lt;EQUAL&gt; <A HREF="#prod6">exp</A> )? ( "," <A HREF="#prod8">l_id</A> )*</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce constantes
// cte -> STRING_LITERAL | NUMBER_LITERAL | LOCATION_LITERAL | KEY_LITERAL | COLOR_LITERAL
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">cte</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING_LITERAL&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;NUMBER_LITERAL&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LOCATION_LITERAL&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;KEY_LITERAL&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COLOR_LITERAL&gt;</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce expresiones aritmeticas, empezando por las aditivas
// s_exp -> exp_m (( OR | + | - ) exp_m)*
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">s_exp</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod11">exp_m</A> ( ( &lt;OR&gt; | &lt;ADD&gt; | &lt;SUB&gt; ) <A HREF="#prod11">exp_m</A> )*</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Genera expresiones multiplicativas o valores
// exp_m -> val_exp (( * | / | % ) val_exp)*
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">exp_m</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod12">val_exp</A> ( ( &lt;AND&gt; | &lt;MULTIPLY&gt; | &lt;DIV&gt; | &lt;MOD&gt; ) <A HREF="#prod12">val_exp</A> )*</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Genera valores o expresiones entre parentesis
// val_exp -> val | (exp)
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">val_exp</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod13">val</A> | "(" <A HREF="#prod6">exp</A> ")" )</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce valores constantes, variables o parametros
// val -> cte | color_din | ID | PARAM
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">val</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod9">cte</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod14">color_din</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod15">component</A></TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;ID&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;PARAM&gt;</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;ISNATIVEMODE&gt;</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce expresiones
// exp -> 
//		  s_exp [( < | > | != | <> | =[=] | <= | >= ) s_exp]
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">exp</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod10">s_exp</A> ( ( &lt;LESS&gt; | &lt;GREAT&gt; | &lt;NOTEQUAL&gt; | &lt;EQUAL&gt; | &lt;GREATEQUAL&gt; | &lt;LESSEQUAL&gt; ) <A HREF="#prod10">s_exp</A> )?</TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce la expresion para resolver un color dinamicamente
// color_din -> COLOR exp
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">color_din</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COLOR&gt; <A HREF="#prod13">val</A></TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce la expresion para resolver un color dinamicamente
// component -> COMPONENT NUMBER exp
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">component</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COMPONENT&gt; <A HREF="#prod9">cte</A> <A HREF="#prod13">val</A></TD>
</TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
// Produce la lista de parametros a pasar a otro script
// l_param -> exp_val ("," l_param)*
</PRE>
  </TD>
 </TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">l_param</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;ID&gt; | &lt;PARAM&gt; | &lt;STRING_LITERAL&gt; | &lt;NUMBER_LITERAL&gt; | &lt;LOCATION_LITERAL&gt; | &lt;KEY_LITERAL&gt; | &lt;COLOR_LITERAL&gt; ) ( "," <A HREF="#prod5">l_param</A> )*</TD>
</TR>
</TABLE>
</BODY>
</HTML>
